function myInstanceof(left, right) {
    // 这里先用typeof来判断基础数据类型，如果是，直接返回false
    if (typeof left !== 'object' || left === null) return false;
    // getProtypeOf是Object对象自带的API，能够拿到参数的原型对象

    let proto = Object.getPrototypeOf(left);

    while (true) {
        if (proto === null) return false;
        if (proto === right.prototype) return true;//找到相同原型对象，返回true
        proto = Object.getPrototypeof(proto);
    }
}

/**
 * 封装一个函数，传递不同类型数据，返回数据类型
 * @param {} obj 
 * @returns 
 */
function getType(obj) {
    let type = typeof obj;
    if (type !== "object") {    // 先进行typeof判断，如果是基础数据类型，直接返回
        return type;
    }
    // 对于typeof返回结果是object的，再进行如下的判断，正则返回结果 [object Array]
    return Object.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1');
}

console.log(getType([]));
console.log(getType(new Date()));

// myInstanceof(car,String)
// class Student{

// }
// class MiddelStudent extends Student{

// }
// const stu1 = new Student()
// const stu2 = new MiddelStudent()